package main

import "fmt"

func badCall() {
	panic("bad end")
}

func test() {
	// 用defer在最后捕获异常
	defer func() {
		if e := recover(); e != nil {
			fmt.Println("Panic", e)
		}
	}()
	fmt.Println("Befor call")
	badCall()
	// 上面panic了，就处理defer，然后即使有recover，也不会继续往下执行了
	fmt.Println("After call")  // 所以这句不会执行
}

func main() {
	test()
}